package com.pe.pgn.clubpgn.service.impl;

import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.pe.pgn.clubpgn.dao.MigrarClienteDao;
import com.pe.pgn.clubpgn.domain.ClpbPrograma;
import com.pe.pgn.clubpgn.domain.beans.BNClientesPersona;
import com.pe.pgn.clubpgn.domain.beans.BNMigracion;
import com.pe.pgn.clubpgn.service.MigrarClienteService;

@Service("migrarClienteService")
public class MigrarClientesServiceImpl implements MigrarClienteService {

	@Autowired
	private MigrarClienteDao migrarClienteDao;

	public ClpbPrograma obtenerPrograma(Long id) {
		return migrarClienteDao.obtenerPrograma(id);
	}

	

	public BNMigracion migrarcliente(BNMigracion bean) {

		BNMigracion migracion = new BNMigracion();

		if (bean != null) {

			if (bean.isDesafilia() == true) {
				bean.setDesafiliar("Y");
			} else if (bean.isDesafilia() == false) {
				bean.setDesafiliar("N");
			}

		}

	Map<String, Object> resultados = migrarClienteDao.migrarcliente(bean);
	

		if (resultados.get("P_DEMENSAJE").equals("EXITO")||resultados.get("P_DEMENSAJE").equals("VACIO_PROGRAMAORGEXITO") ) {

		

			if (resultados.get("RANGOSI") == null) {
				migracion.setRangosSI("Vacio");
			} else {
				migracion.setRangosSI(resultados.get("RANGOSI").toString());
			}
					
					
			if (resultados.get("RANGONO") == null) {
				migracion.setRangosNO("Vacio");
			} else {
				migracion.setRangosNO(resultados.get("RANGONO").toString());
			}
			
			if (resultados.get("P_MOTIVO") == null) {
				migracion.setMotivo("vacio");
			} else {
				migracion.setMotivo(resultados.get("P_MOTIVO").toString());
			}


			if (resultados.get("P_DEPARTAMENTO") == null) {
				migracion.setCoDepartamento(" ");
			} else {
				migracion.setCoDepartamento(resultados.get("P_DEPARTAMENTO")
						.toString());
			}
			if (resultados.get("P_PROVINCIA") == null) {
				migracion.setCoProvincia(" ");
			} else {
				migracion.setCoProvincia(resultados.get("P_PROVINCIA")
						.toString());
			}
			if (resultados.get("P_DISTRITO") == null) {
				migracion.setCoDistrito(" ");
			} else {
				migracion
						.setCoDistrito(resultados.get("P_DISTRITO").toString());
			}

			if (resultados.get("DISTRITO") == null) {
				migracion.setUbicacion(" ");
			} else {
				migracion.setUbicacion(resultados.get("DISTRITO").toString());
			}
			if (resultados.get("P_EDAD_INI") == null
					|| resultados.get("P_EDAD_FIN") == null) {
				migracion.setEdades("No escogio edades");
			} else {
				migracion
						.setEdades(resultados.get("P_EDAD_INI").toString()
								+ " al "
								+ resultados.get("P_EDAD_FIN").toString() + "");
			}
			if (resultados.get("P_FEC_AFILI_INI") == null
					|| resultados.get("P_FEC_AFILI_FIN") == null) {
				migracion.setFechas("No escogio Rango de Fechas de Afiliacion");
			} else {
				migracion.setFechas(resultados.get("P_FEC_AFILI_INI")
						.toString()
						+ " al "
						+ resultados.get("P_FEC_AFILI_FIN").toString() + "");
			}
			if (resultados.get("P_EDAD_INI") == null) {
				migracion.setEdad(" ");
			} else {
				migracion.setEdad(resultados.get("P_EDAD_INI").toString());
			}
			if (resultados.get("P_EDAD_FIN") == null) {
				migracion.setEdad1(" ");
			} else {
				migracion.setEdad1(resultados.get("P_EDAD_FIN").toString());
			}

			if (resultados.get("P_FEC_AFILI_INI") == null) {
				migracion.setFechaini(" ");
			} else {
				migracion.setFechaini(resultados.get("P_FEC_AFILI_INI")
						.toString());
			}
			if (resultados.get("P_FEC_AFILI_FIN") == null) {
				migracion.setFechafin(" ");
			} else {
				migracion.setFechafin(resultados.get("P_FEC_AFILI_FIN")
						.toString());
			}
			if (resultados.get("P_DESAFILIAR") == null) {
					migracion.setDesafiliar("NO");
				
			}else{
				if (resultados.get("P_DESAFILIAR").toString().equals("Y")) {
					migracion.setDesafiliar("SI");
				} else {
					migracion.setDesafiliar("NO");
				}
			}
			

			migracion.setMensaje("EXITO");
			migracion.setCoProgramaOrigen(Long.parseLong(resultados.get(
					"P_PROGRAMA_ORG").toString()));
			migracion.setCoProgramaDestino(Long.parseLong(resultados.get(
					"P_PROGRAMA_DES").toString()));
			migracion.setDeProgramaOrigen(resultados.get("DEPROGRMAORG")
					.toString());
			migracion.setDeProgramaDestino(resultados.get("DEPROGRMADES")
					.toString());
			migracion.setNroafiliados(resultados.get("NRO_AFILIADOS")
					.toString());
			migracion.setNrodesafiliados(resultados.get("NRO_DESAFILIADOS")
					.toString());

		} else if (resultados.get("P_DEMENSAJE").equals("ERROR")) {
			migracion.setMensaje("ERROR");

		} else if (resultados.get("P_DEMENSAJE").equals("VACIO")) {
			migracion.setMensaje("VACIO");
		} else if (resultados.get("P_DEMENSAJE") == null) {
			migracion.setMensaje("VACIO_PROG");
		} 

		return migracion;

	}
	
	
	public BNMigracion vistapreviamigrar(BNMigracion bean) {

	
		
	Map<String, Object> resultados = migrarClienteDao.vistamigrarcliente(bean);
	BNMigracion vista = new BNMigracion();


			if (resultados.get("RANGOSI") == null) {
				vista.setRangosSI("Vacio");
			} else {
				vista.setRangosSI(resultados.get("RANGOSI").toString());
			}
			
			
			if (resultados.get("RANGONO") == null) {
				vista.setRangosNO("Vacio");
			} else {
				vista.setRangosNO(resultados.get("RANGONO").toString());
			}
			
			
			if (resultados.get("P_MOTIVO") == null) {
				vista.setMotivo("vacio");
			} else {
				vista.setMotivo(resultados.get("P_MOTIVO").toString());
			}
			

			if (resultados.get("P_DEPARTAMENTO") == null) {
				vista.setCoDepartamento(" ");
			} else {
				vista.setCoDepartamento(resultados.get("P_DEPARTAMENTO")
						.toString());
			}
			if (resultados.get("P_PROVINCIA") == null) {
				vista.setCoProvincia(" ");
			} else {
				vista.setCoProvincia(resultados.get("P_PROVINCIA")
						.toString());
			}
			if (resultados.get("P_DISTRITO") == null) {
				vista.setCoDistrito(" ");
			} else {
				vista
						.setCoDistrito(resultados.get("P_DISTRITO").toString());
			}

			if (resultados.get("DISTRITO") == null) {
				vista.setUbicacion(" ");
			} else {
				vista.setUbicacion(resultados.get("DISTRITO").toString());
			}
			if (resultados.get("P_EDAD_INI") == null
					|| resultados.get("P_EDAD_FIN") == null) {
				vista.setEdades("No escogio edades");
			} else {
				vista.setEdades(resultados.get("P_EDAD_INI").toString()
								+ " al "
								+ resultados.get("P_EDAD_FIN").toString() + "");
			}
			if (resultados.get("P_FEC_AFILI_INI") == null
					|| resultados.get("P_FEC_AFILI_FIN") == null) {
				vista.setFechas("No escogio Rango de Fechas de Afiliacion");
			} else {
				vista.setFechas(resultados.get("P_FEC_AFILI_INI")
						.toString()
						+ " al "
						+ resultados.get("P_FEC_AFILI_FIN").toString() + "");
			}
			if (resultados.get("P_EDAD_INI") == null) {
				vista.setEdad(" ");
			} else {
				vista.setEdad(resultados.get("P_EDAD_INI").toString());
			}
			if (resultados.get("P_EDAD_FIN") == null) {
				vista.setEdad1(" ");
			} else {
				vista.setEdad1(resultados.get("P_EDAD_FIN").toString());
			}

			if (resultados.get("P_FEC_AFILI_INI") == null) {
				vista.setFechaini(" ");
			} else {
				vista.setFechaini(resultados.get("P_FEC_AFILI_INI")
						.toString());
			}
			if (resultados.get("P_FEC_AFILI_FIN") == null) {
				vista.setFechafin(" ");
			} else {
				vista.setFechafin(resultados.get("P_FEC_AFILI_FIN")
						.toString());
			}

			if (resultados.get("P_DESAFILIAR").toString().equals("Y")) {
				vista.setDesafiliar("SI");
			} else {
				vista.setDesafiliar("NO");
			}

			vista.setMensaje("EXITO");
			vista.setCoProgramaOrigen(Long.parseLong(resultados.get(
					"P_PROGRAMA_ORG").toString()));
			vista.setCoProgramaDestino(Long.parseLong(resultados.get(
					"P_PROGRAMA_DES").toString()));
			vista.setDeProgramaOrigen(resultados.get("DEPROGRMAORG")
					.toString());
			vista.setDeProgramaDestino(resultados.get("DEPROGRMADES")
					.toString());
			if(resultados.get("NRO_AFILIADOS")==null){
				vista.setNroafiliados("");
			}else{
				vista.setNroafiliados(resultados.get("NRO_AFILIADOS").toString());
			}
			
			if(resultados.get("NRO_DESAFILIADOS")==null){
				vista.setNrodesafiliados("");
			}else{
				vista.setNrodesafiliados(resultados.get("NRO_DESAFILIADOS").toString());
			}

		return vista;

	}
	
	public List<BNClientesPersona> listadoRangos(String numeros, String nocompatible){
		return migrarClienteDao.listadoRangos(numeros, nocompatible);
	}
	

	public List<ClpbPrograma> listaProgramas() {

		return migrarClienteDao.listaProgramas();
	}

	public int programasnocompatibles(String idprogramaorg, String idprogramades){

		long idproorg=Long.parseLong(idprogramaorg);
		long idprodest=Long.parseLong(idprogramades);
		
	return migrarClienteDao.programasnocompatibles(idproorg, idprodest);
	}



}
